Boot Validation in Imaging Devices

ABSTRACT

A boot validation system and method may be used in a computer system to validate boot code before allowing the computer system to execute the boot code. In particular, a secure hash algorithm may be used to compute a hash value of the boot code and the computed hash value may be compared to a preprogrammed hash value stored in a secure non-volatile device. If the hash values match the boot code may be validated and the system may then be allowed to execute the boot code. Once the boot code is validated, the boot code may be executed to validate other code (e.g., firmware) in the computer system. In an exemplary embodiment, the boot validation system and method may be used in an imaging device, such as a printer.

CROSS-REFERENCE TO RELATED APPLICATION

The present application is a divisional of U.S. patent application Ser.No. 11/425,893, filed Jun. 22, 2006, which is incorporated herein byreference in its entirety.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

None.

REFERENCE TO SEQUENTIAL LISTING, ETC.

None.

BACKGROUND

1. Field of Invention

The present invention relates to securely booting computer systems, andmore particularly, to a boot validation system and method for use in animage forming device such as, for example, an electrophotographicprinter, an inkjet printer, a fax device, a copier, an all-in-one deviceor a multipurpose device.

2. Description of Related Art

Imaging devices, such as printers, may include various security systems,for example, to protect billing information and/or to protectconfidential customer data. In general, mechanisms for achieving printersecurity may include both hardware and software. In any security system,the weakest link may limit the overall security of the system. In theprinter architecture, for example, one of the weakest links may be thevulnerability of the embedded firmware to tampering. Sophisticatedhackers may reprogram portions of the firmware that effectively bypassessecurity measures. One way to protect against these attacks is for asecurity system to detect that the firmware has been modified and toprevent normal operation of the system. If the firmware itself is usedto detect modifications, then the piece of firmware that performs tamperdetection should be trustworthy.

SUMMARY OF THE INVENTION

One embodiment of the present invention provides a system for bootvalidation in an image forming device including at least one centralprocessing unit (CPU). The system includes a firmware storage deviceincluding firmware, the firmware including at least boot code. Thesystem further includes a secure non-volatile storage device storing apreprogrammed hash value corresponding to the boot code. The systemfurther includes logic configured to hold at least the CPU in reset inresponse to a power on signal to prevent the CPU from executing the bootcode upon powering on the image forming device, to retrieve the bootcode, to compute a hash value of the boot code, to retrieve thepreprogrammed hash value, to compare the computed hash value to thepreprogrammed hash value, and to allow the image forming device toexecute the boot code if the computed hash value matches thepreprogrammed hash value. In one such embodiment, the boot code includestamper detection code configured to validate other firmware. The systemmay include, for example, an application specific integrated circuit(ASIC) including the logic, or a boot validation device including thelogic, or an ASIC and a boot validation device operatively coupled toone another, wherein the boot validation device includes the logic. Inanother particular case, the firmware storage device is for storing theboot code together with other executable code including firmware otherthan boot code. In another particular case, the logic is configured toinhibit operation of at least one component of the image forming deviceif the computed hash value does not match the preprogrammed hash value.The image forming device may be, for example, one of a printer, a faxdevice, a copier, or a combination thereof. The system may be containedin a cartridge configured for use in the image forming device. Thefirmware storage device may include, for example, programmablenon-volatile memory.

Another embodiment of the present invention provides an imaging device(e.g., printer, a fax device, a copier, or a combination thereof)including at least one central processing unit (CPU). The deviceincludes a print engine, and a controller configured to operate theprint engine and to control image forming operations. The controllerincludes a firmware storage device including firmware, the firmwareincluding at least boot code. The controller further includes a securenon-volatile storage device storing a preprogrammed hash valuecorresponding to the boot code. The controller further includes logicconfigured to hold at least the CPU in reset in response to a power onsignal to prevent the CPU from executing the boot code upon powering onthe imaging device, to retrieve the boot code, to compute a hash valueof the boot code, to retrieve the preprogrammed hash value, to comparethe computed hash value to the preprogrammed hash value, and to allowthe imaging device to execute the boot code if the computed hash valuematches the preprogrammed hash value. In one particular case, thecontroller comprises an application specific integrated circuit (ASIC),the ASIC including the logic. Alternatively, the controller may comprisea system ASIC and a boot validation device coupled to the system ASIC,the boot validation device including the logic. In another particularcase, the controller comprises the CPU, and the CPU is coupled to thelogic, wherein the logic is configured to prevent the CPU from executinginstructions. In another particular case, the firmware storage device isfor storing the boot code together with other executable code includingfirmware other than boot code. In another particular case, the logic isconfigured to inhibit operation of at least one component of the imagingdevice if the computed hash value does not match the preprogrammed hashvalue.

Another embodiment of the present invention provides an computer programproduct residing on a computer readable medium having a plurality ofinstructions stored thereon which, when executed by a processor, causethe processor to perform a boot validation method in an image formingdevice including at least one central processing unit (CPU). The methodincludes holding at least the CPU in reset in response to a power onsignal to prevent the CPU from executing at least boot code uponpowering on the image forming device. The method further includesretrieving the boot code from a firmware storage device, computing ahash value of the boot code, retrieving a preprogrammed hash value froma secure non-volatile device, and comparing the computed hash value withthe preprogrammed hash value. The method further includes allowing theimage forming device to execute the boot code if said computed hashvalue matches said preprogrammed hash value. The method may furtherinclude executing the boot code to validate other executable code. Inone particular case, the product is contained in an image formingapparatus. In another particular case, the product is contained in animage forming device cartridge. The firmware storage device may, forexample, further be configured for storing said boot code together withother executable code including firmware other than boot code. Otherfunctionality associated with the computer program product will beapparent in light of this disclosure.

The features and advantages described herein are not all-inclusive and,in particular, many additional features and advantages will be apparentto one of ordinary skill in the art in view of the drawings,specification, and claims. Moreover, it should be noted that thelanguage used in the specification has been principally selected forreadability and instructional purposes, and not to limit the scope ofthe inventive subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description below may be better understood with referenceto the accompanying figures which are provided for illustrative purposesand are not to be considered as limiting any aspect of the inventionwherein:

FIG. 1 is a diagrammatic view of an imaging device, consistent with oneembodiment of the present invention;

FIG. 2 is a diagrammatic view of an imaging device controllerarchitecture, consistent with one embodiment of the present invention;

FIG. 3 is a diagrammatic view of one embodiment of a boot validationsystem using a system Application Specific Integrated Circuit (ASIC);

FIG. 4 is a diagrammatic view of another embodiment of a boot validationsystem using a separate boot validation device; and

FIG. 5 is a flow chart illustrating a boot validation method, consistentwith one embodiment of the present invention.

DETAILED DESCRIPTION

A boot validation system and method may be used in a computer system tovalidate boot code before allowing the computer system to execute theboot code. Once the boot code is validated, the boot code may beexecuted to validate other executable code (e.g., firmware) in thecomputer system. In an exemplary embodiment, the boot validation systemand method may be used in an imaging device, such as anelectrophotographic printer, an inkjet printer, a fax device, a copier,an all-in-one device or a multipurpose device. Those skilled in the artwill recognize that the boot validation system and method may be used inother computer systems.

Referring to FIG. 1, a boot validation system and method, consistentwith one embodiment, may be used in an imaging system 100. The imagingsystem 100 may include an imaging apparatus or device 102 and a host 104that communicates via a communication link 106. The communication link106 may include any structure that facilitates electronic communicationbetween two components (e.g., a direct cable connection, wirelessconnection or a network connection) and may be established using wiredor wireless technology. Alternatively, the imaging device 102 may be astandalone unit that is not linked to a host. For example, the imagingdevice 102 may take the form of a multifunction machine that includesstandalone copying and facsimile capabilities, in addition to optionallyserving as a printer when attached to the host 104.

The imaging device 102 may include a controller 110 and a print engine112. A printing cartridge 114 may be coupled to the print engine 112 tofacilitate printing. The imaging device 102 may also include a userinterface 116. The controller 110 may include one or more processorunits and memory units (not shown) and may be formed as one or moreApplication Specific Integrated Circuits (ASICs). The controller 110 mayprocess print data (e.g., received from host 104) and may communicatewith the print engine 112 via a communications link 118 to operate theprint engine 112 during printing. In the context of the examples of theimaging device 102 given above, the print engine 112 may be, forexample, an ink jet print engine, a color electrophotographic printengine or thermal transfer print engine, configured to form an image ona sheet of print media 120, such as a sheet of paper.

The host 104 may be, for example, a personal computer including aninput/output (I/O) device 130, such as a keyboard, mouse and/or displaymonitor. The host 104 may also include a processor, I/O interfaces,memory, such as random access memory (RAM), read only memory (ROM),and/or non-volatile RAM (NVRAM) (not shown). The host 104 may alsoinclude one or more I/O ports, such as a universal serial bus (USB) portor other serial or parallel ports (not shown). The host 104 may furtherinclude a mass data storage device, such as a hard drive, CD-ROM and/orDVD units (not shown).

During operation involving print data supplied by the host 104, the host104 may include in its memory a software program including programinstructions that function as an imaging driver 132 (e.g., printerdriver software) for the imaging device 102. Imaging driver 132 may bein communication with the controller 110 of the imaging device 102 viathe communications link 106. The imaging driver 132 facilitatescommunication between the imaging device 102 and the host 104 and mayprovide formatted print data to the imaging device 102 to print animage. Alternatively, all or a portion of imaging driver 132 may belocated in the controller 110 of the imaging device 102.

FIG. 2 is a diagrammatic illustration of components of the controllerarchitecture that may be used to implement a boot validation system andmethod, for example, in an imaging device. In one embodiment, thecontroller 110 may include a system Application Specific IntegratedCircuit (ASIC) 210, a central processing unit (CPU) 220, a firmwarestorage device 230, a secure non-volatile (NV) storage device 240, andan optional boot validation device 250 coupled to each other via systembus 260. Those skilled in the art will recognize that the controller 110may also include other components and other embodiments of thecontroller architecture may also be used to perform the boot validationmethod. Alternatively, one or more of the components 210, 220, 230, 240,250 may also be located on a printer cartridge 114 (see FIG. 1) or someother removable component in an imaging device.

The system ASIC 210 may include logic responsible for servicing the dataneeds of the CPU 220 and for communicating with peripheral devices inthe system. In one embodiment, the system ASIC 210 may also includelogic to perform the boot validation functions, for example, using asecure hash algorithm as described greater detail below. In anotherembodiment, the separate boot validation device 250 may include logic toperform the boot validation functions. The boot validation device 250may be a complex programmable logic device (CPLD), a field-programmablegate array (FPGA), another special purpose ASIC, or other type ofspecial purpose chip or hardware.

The firmware storage device 230 may be any type of non-volatile memorysuch as NAND flash, NOR flash, or an Electrically-Erasable ProgrammableRead-Only Memory (EEPROM). The firmware storage device 230 may storefirmware 232 including boot code 234 in a known location in the firmwarestorage device 230. As used herein, boot code 234 refers to the codethat is executed first after the system is powered on, i.e., when thesystem is booted. The boot code 234 may be responsible for validatingand loading the remainder of the firmware 232. The boot code 234 mayalso be responsible for initializing and testing the hardware. Thefirmware 232 may also include other executable code 236 responsible forperforming other functions, for example, in the printer or imagingdevice.

The secure NV device 240 may store secure data used to perform the bootvalidation, such as a preprogrammed hash value that was programmed whenthe boot code 234 was programmed and that represents the expected valueof the boot code hash as described below. The secure NV device 240 mayinclude any device capable of storing data and protecting that data fromattackers (e.g., protecting the data from being changed). One example ofa secure NV device 240 is a memory or storage device that is destroyedor rendered unreadable if there is an attempt to modify the data storedtherein. Another example of a secure NV device 240 includes a secureEEPROM. The secure NV device 240 may also be a custom chip or arelatively small ROM.

According to one embodiment of the boot validation system and method,the controller 110 may validate the boot code 234 before allowing theCPU 220 to execute the boot code 234. If the boot code 234 can beprotected against tampering, then the boot code 234 may be used tovalidate the remainder of the firmware 232. The boot code 234 may bevalidated by computing a hash value of the boot code 234 and comparingthe computed hash value to the preprogrammed hash value 242 stored inthe secure NV device 240. The hash value may be computed using a securehash algorithm known to those skilled in the art. The secure hashalgorithm may therefore make it computationally infeasible to developboot code that has the same hash value as the original boot code.Examples of secure hash algorithms that may be used include the securehash algorithm (SHA) family of cryptographic hash functions (e.g., theSHA-1 algorithm) or a keyed-hash message authentication code (HMAC)calculated using a cryptographic hash function (e.g., SHA-1) incombination with a secret key.

If the boot code validation operation succeeds, then the CPU 220 isallowed to operate normally and the boot code 234 may be executed. Byexecuting the validated boot code 234, other firmware code 236 may thenbe safely validated. If any of the firmware 232 is not validated, thesystem may be halted and execution of the firmware 232 may be preventeduntil the firmware can be returned to an authentic state.

According to one embodiment of the controller architecture, as shown inFIG. 3, the system ASIC 210 validates the boot code 234 before allowingthe CPU 220 to execute the boot code 234. The system ASIC 210 mayinclude system control logic 310 to control the reset signal 322 to theCPU 220 and hold the CPU 220 in reset in response to a “power on” signal320, thereby preventing the CPU 220 from executing instructions.Alternatively, the system control logic 310 in the system ASIC 210 mayprevent the CPU 220 from executing instructions by refusing to fetchinstructions for the CPU 220 or by other techniques known to thoseskilled in the art.

While holding the CPU 220 in reset, the system ASIC 210 may read theboot code 234 from the firmware storage device 230 and the preprogrammedhash value 242 from the secure non-volatile storage device 240. Thesystem ASIC 210 may include hash computation logic 312 to compute a hashvalue 314 according to the secure hash algorithm. Where a keyed hashalgorithm is used, a key 318 is provided to the hash computation logicto seed the hash algorithm. The key 318 may be stored in the system ASIC210 or in some other location where it is difficult to access andretrieve. The system ASIC 210 may also include hash comparison logic 316to compare the computed hash value 314 to the preprogrammed hash value242.

The system control logic 310 in the system ASIC 210 may continue to holdthe CPU 220 in reset if the computed hash value 314 does not match thepreprogrammed hash value 242. If the computed hash value 314 matches thepreprogrammed hash value 242, the system control logic 310 in the systemASIC 210 may release the reset signal 322 to the CPU 220 allowing theCPU 220 to execute instructions.

According to another embodiment of the controller architecture, as shownin FIG. 4, the boot validation device 250 validates the boot code 234before allowing the CPU 220 to execute the boot code 234. The bootvalidation device 250 may include system control logic 410 to controlthe reset signal 422 to the system ASIC 210 and hold the system ASIC 210in a reset condition in response to a “power on” signal 420, therebypreventing the system ASIC 210 and the CPU 220 from operating.Alternatively, the system control logic 410 in the boot validationdevice 250 may directly hold the CPU 220 in a reset condition. Thesystem control logic 410 may also inhibit operation of other criticalportion(s) or component(s) 430, for example, by controlling a signal 428to the component 430 to hold the component in a reset condition or tootherwise inhibit operation of that component. In an imaging device, forexample, the critical portion(s) or component(s) 430 may be motors,voltage regulators, communications chips, or other critical portion ofthe controller logic.

In this embodiment, the boot validation device 250 may read the bootcode 234 from the firmware storage device 230 and the preprogrammed hashvalue 242 from the secure NV device 240. The boot validation device 250may include hash computation logic 412 to compute the hash value 414according to the secure hash algorithm. Where a keyed hash algorithm isused, a key 418 is provided to the hash computation logic to seed thehash algorithm. The key 418 may be stored in the boot validation device250 or in some other location where it is relatively difficult to accessand retrieve. The boot validation device 250 may also include hashcomparison logic 416 to compare the computed hash value 414 to thepreprogrammed hash value 242.

The system control logic 410 in the boot validation device 250 maycontinue to hold the system ASIC 210 (and/or the CPU 220) in a resetcondition if the computed hash value 414 does not match thepreprogrammed hash value 242. If the computed hash value 414 matches thepreprogrammed hash value 242, the control logic 410 may release thereset signal 422 to the system ASIC 210 (or the CPU 220) allowing theCPU 220 to execute instructions.

FIG. 5 illustrates a method for boot validation in a computer system. Inan imaging device, for example, the boot validation method may beperformed by the controller 110 (e.g., using the system ASIC 210 or theboot validation device 250 described above) or by a removable componentsuch as the printing cartridge 114 (see FIG. 1). When the computersystem is powered on 510, the system is initially prevented 512 fromexecuting code, particularly the boot code. As described in theembodiments above, the system ASIC 210 or the boot validation device 220may prevent the system from executing code, for example, by holding theCPU 220 and/or the system ASIC 210 in reset, thereby preventing the CPU220 from executing instructions. Alternatively, the system may inhibitoperation of some other portion or component in the system, such asmotors, voltage regulators, and/or communication chips.

After the system is powered on and execution is initially prevented, theboot code may be retrieved 514 and a boot code hash value may becomputed 516 using the secure hash algorithm. The computed hash valuemay be compared 520 to the preprogrammed hash value, which has beenretrieved 518 from a secure NV device. The preprogrammed hash valuerepresents the expected value of the boot code hash. Thus, if the bootcode remains unchanged after the initial programming, the computed hashvalue should be the same as the preprogrammed hash value. If the bootcode has been tampered with and changed after the boot code has beenprogrammed, the hash computation should produce a computed hash valuethat is different from the preprogrammed hash value.

If the computed hash value and the preprogrammed hash value do not match522 (e.g., indicating tampering with the boot code), the boot code isnot validated and the controller may continue to prevent execution 526.In the embodiments described above, for example, the system ASIC 210and/or the boot validation device 250 may continue to prevent the CPU220 from executing instructions. The system (e.g., the system ASIC 210and/or the boot validation device 250) may also prevent operation by“defunctioning” the system or inhibiting operation of some othercritical component of the system. The system may also provide an errormessage indicating that the boot code is invalid. Operation may beprevented until the boot code is returned to an authentic state.

If the computed hash value and the preprogrammed hash value match 522,the controller may allow 524 the CPU to execute code. When operation isallowed 524 after the boot code has been validated, the boot code may beexecuted by the CPU to perform various boot code functions includingvalidation of other firmware 528. The boot code may validate theremainder of the firmware, for example, using signature verificationmechanisms or other standard validation algorithms known to thoseskilled in the art. One example of such a signature verificationmechanism may use the RSA algorithm for public-key encryption. If theother firmware is not validated, the system may provide an appropriateerror message or error code and may be “defunctioned” or prevented fromoperating until the firmware is returned to an authentic state. If theboot code has been validated and is executed, the “defunctioning” may beenforced by the boot code. In a printer, for example, the boot code maycause the system ASIC or CPU to disable the printing function bydisabling a component such as a laser driver, fuser or motor driver.Operation may be prevented until the invalid code is returned to anauthentic state.

Although the exemplary embodiments illustrate the validation of the bootcode before the system is allowed to execute code, other code may alsobe validated with the boot code before the system is allowed to executecode. If the boot code and/or any other code that is validated using thesecure hash algorithm is changed after the initial programming, thepreprogrammed hash value will also need to be updated accordingly.

Accordingly, the boot validation system and method may prevent executionof any boot code that may have been modified (i.e., tampered with) afterthe printer or other computer system has been manufactured. Thus, theboot code may be stored with the other firmware (e.g., in the flash)instead of storing the boot code in a separate ROM (Read-Only Memory) toprevent modification.

The foregoing description is provided to illustrate and explain thepresent invention. However, the description hereinabove should not beconsidered to limit the scope of the invention set forth in the claimsappended here to.

1. A system for boot validation in an image forming device including atleast one central processing unit (CPU), comprising: a firmware storagedevice including firmware, said firmware including at least boot code; asecure non-volatile storage device storing a preprogrammed hash valuecorresponding to said boot code; and logic configured to hold at leastsaid CPU in reset in response to a power on signal to prevent said CPUfrom executing said boot code upon powering on said image formingdevice, to retrieve said boot code, to compute a hash value of said bootcode, to retrieve said preprogrammed hash value, to compare saidcomputed hash value to said preprogrammed hash value, and to allow saidimage forming device to execute said boot code if said computed hashvalue matches said preprogrammed hash value.
 2. The system of claim 1wherein said boot code includes tamper detection code configured tovalidate other firmware.
 3. The system of claim 1 further comprising anapplication specific integrated circuit (ASIC) including said logic. 4.The system of claim 1 further comprising a system application specificintegrated circuit (ASIC) and a boot validation device coupled to saidsystem ASIC, wherein said boot validation device includes said logic. 5.The system of claim 1 wherein said firmware storage device is forstoring said boot code together with other executable code includingfirmware other than boot code.
 6. The system of claim 1 wherein saidlogic is configured to inhibit operation of at least one component ofsaid image forming device if said computed hash value does not matchsaid preprogrammed hash value.
 7. The system of claim 1 wherein saidimage forming device is one of a printer, a fax device, a copier, or acombination thereof.
 8. The system of claim 1 wherein said system iscontained in a cartridge configured for use in the image forming device.9. The system of claim 1 further comprising a boot validation deviceincluding said logic.
 10. The system of claim 1 wherein said firmwarestorage device includes programmable non-volatile memory.
 11. An imagingdevice including at least one central processing unit (CPU), comprising:a print engine; and a controller configured to operate said print engineand to control image forming operations, said controller comprising: afirmware storage device including firmware, said firmware including atleast boot code; a secure non-volatile storage device storing apreprogrammed hash value corresponding to said boot code; and logicconfigured to hold at least said CPU in reset in response to a power onsignal to prevent said CPU from executing said boot code upon poweringon said imaging device, to retrieve said boot code, to compute a hashvalue of said boot code, to retrieve said preprogrammed hash value, tocompare said computed hash value to said preprogrammed hash value, andto allow said imaging device to execute said boot code if said computedhash value matches said preprogrammed hash value.
 12. The imaging deviceof claim 11 wherein said controller comprises an application specificintegrated circuit (ASIC), said ASIC including said logic.
 13. Theimaging device of claim 11 wherein said controller comprises a systemapplication specific integrated circuit (ASIC) and a boot validationdevice coupled to said ASIC, said boot validation device including saidlogic.
 14. The imaging device of claim 11 wherein said controllercomprises said CPU, and said CPU is coupled to said logic, wherein saidlogic is configured to prevent said CPU from executing instructions. 15.The imaging device of claim 11 wherein said firmware storage device isfor storing said boot code together with other executable code includingfirmware other than boot code.
 16. The imaging device of claim 11wherein said logic is configured to inhibit operation of at least onecomponent of said imaging device if said computed hash value does notmatch said preprogrammed hash value.
 17. The imaging device of claim 11wherein said imaging device is one of a printer, a fax device, a copier,or a combination thereof.
 18. A computer program product residing on acomputer readable medium having a plurality of instructions storedthereon which, when executed by a processor, cause the processor toperform a boot validation method in an image forming device including atleast one central processing unit (CPU), the method comprising: holdingat least said CPU in reset in response to a power on signal to preventsaid CPU from executing at least boot code upon powering on said imageforming device; retrieving said boot code from a firmware storagedevice; computing a hash value of said boot code; retrieving apreprogrammed hash value from a secure non-volatile device; comparingsaid computed hash value with said preprogrammed hash value; andallowing said image forming device to execute the boot code if saidcomputed hash value matches said preprogrammed hash value.
 19. Thecomputer program product of claim 18 wherein the method furthercomprises executing said boot code to validate other executable code.20. The computer program product of claim 18 wherein said product iscontained in an image forming apparatus.
 21. The computer programproduct of claim 18 wherein said product is contained in an imageforming device cartridge.
 22. The computer program product of claim 18wherein said firmware storage device is for storing said boot codetogether with other executable code including firmware other than bootcode.